package com.jialin.rocket.service.model;

import org.apache.rocketmq.client.exception.MQClientException;
import org.apache.rocketmq.client.producer.DefaultMQProducer;
import org.springframework.context.annotation.Configuration;

/**
 * 支付消息生产者
 */
@Configuration
public class PayProducer {

    /**
     * 所属组
     */
    private String producerGroup = "pay_group";

    /**
     * MQ名称地址
     */
    private String nameServerAddr = "10.66.53.151:9876";

    /**
     * 消息生产者
     */
    private DefaultMQProducer producer;

    /**
     * 构造函数
     */
    public PayProducer() {
        System.out.println("创建了PayProducer");
        //设置组
        producer = new DefaultMQProducer(producerGroup);
        //设置服务地址,如果多个就是用分号隔开"10.66.53.151:9876;10.66.53.152:9876"
        producer.setNamesrvAddr(nameServerAddr);
        start();
    }


    /**
     * 获取生产者
     *
     * @return
     */
    public DefaultMQProducer getProducer() {
        return this.producer;
    }

    /**
     * 对象在使用之前必须调用一次 ，且只有一次
     */
    public void start() {
        try {
            this.producer.start();
        } catch (MQClientException e) {
            e.printStackTrace();
        }
    }

    /**
     * 关闭方法，一般在上下文
     */
    public void shutdown() {
        this.producer.shutdown();
    }
}
